/**
 * 
 */
package view;

import java.util.Observable;
import java.util.Observer;

import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JPanel;

import model.KundenModel;
import model.MenueObenModel;
import model.ProjektModel;
import model.StundenModel;
import view_kunden.Kunden;
import view_projekte.Projekte;
import view_stunden.Stunden;
import controller.HauptfensterController;
import controller.KundenController;
import controller.MenueObenController;
import controller.ProjektController;
import controller.StundenController;

/**
 * @author Schweingruber Roger
 * 
 */
public class Hauptfenster extends JFrame implements Observer {

	private HauptfensterController hauptfensterController;
	private MenueObenModel menueObenModel;

	private KundenModel kundenModel;
	private KundenController kundenController;
	private StundenController stundenController;
	private MenueObenController menueObenController;

	private ProjektModel projektModel;
	private ProjektController projektController;
	private StundenModel stundenModel;

	private JFrame frmKunden;
	private JPanel pnlStunden;
	private JFrame frmProjekte;

	private JMenuBar jmbMenuOben;

	/**
	 * @param menueObenModel
	 * @param hauptfensterController
	 * @param kundenModel
	 * @param kundenController
	 * @param stundenController
	 * @param stundenModel
	 * 
	 */
	public Hauptfenster(HauptfensterController hauptfensterController,
			MenueObenModel menueObenModel, KundenModel kundenModel,
			KundenController kundenController, ProjektModel projektModel,
			ProjektController projektController,
			StundenController stundenController, StundenModel stundenModel, MenueObenController menueObenController) {
		super();

		this.hauptfensterController = hauptfensterController;

		this.menueObenModel = menueObenModel;
		this.menueObenController = menueObenController;

		// Kundenverwaltung
		this.kundenModel = kundenModel;
		this.kundenController = kundenController;

		// Prjoktverwaltung
		this.projektModel = projektModel;
		this.projektController = projektController;

		// Stundenverwaltung
		this.stundenModel = stundenModel;
		this.stundenController = stundenController;

		menueObenModel.addObserver(this);

		initWidgets();

		addWidgets();

		this.setJMenuBar(jmbMenuOben);
		this.setTitle("Stundenverwaltung");
		this.pack();
		this.setVisible(true);
		this.setLocationRelativeTo(null);
	}

	/**
	 * 
	 */
	private void initWidgets() {
		jmbMenuOben = new MenueOben(menueObenController, menueObenModel);

		frmKunden = new Kunden(kundenController, kundenModel, menueObenController, menueObenModel);

		frmProjekte = new Projekte(projektController, projektModel, menueObenController, menueObenModel);

		pnlStunden = new Stunden(stundenController, stundenModel);

	}

	/**
	 * Beim Start wird dieses Panel geladen
	 */
	private void addWidgets() {
		add(pnlStunden);
	}

	/**
	 * 
	 */
	@Override
	public void update(Observable o, Object arg) {
		if (menueObenModel == o) {
			if (arg.equals("fensterChange")) {

				System.out.println(menueObenModel.getFenster());

				switch (menueObenModel.getFenster()) {
				case "Kunden verwalten":
					frmKunden.setVisible(true);
					break;

				case "Projekte verwalten":
					frmProjekte.setVisible(true);
					break;

				default:
					break;
				}

			}
		}
	}

}
